home *** CD-ROM | disk | FTP | other *** search
/ QRZ! Ham Radio 8 / QRZ Ham Radio Callsign Database - Volume 8.iso / pc / files / t_unix / bs941029.tgz / bbsx-941029.tar / bbsx / bbs.h < prev    next >
C/C++ Source or Header  |  1994-10-29  |  8KB  |  305 lines

  1. /* @(#) $Header: /home/dg1rtf/tcp/bbsx/RCS/bbs.h,v 1.4 1994/10/29 15:18:25 root Exp $ */
  2.  
  3. #ifndef BBS_H
  4.  
  5. #define BBS_H
  6.  
  7. #define BBSX_REVISION    "1.6"
  8. #define REVISION_DATE    "29.10.1994"
  9.  
  10. #define BIDFILE         "seqbid"
  11. #define CONFIGFILE      "config"
  12. #define LIFEFILE        "lifetime"
  13. #define ALIASFILE       "bbsalias"
  14. #define HELPFILE        "help"
  15. #define INDEXFILE       "index"
  16. #define LOGFILE        "read_"
  17. #define WELCOMEMSG    ".welcome"
  18. #define LOCKFILE    "lock"
  19. #define MAILFILE    "isuser"
  20.  
  21. #define WRKDIR        "/users/bbs"
  22. #define DEBUGFILE       "/tmp/bbs.debug"
  23. #define INFOFILE        "/usr/local/lib/station.data"
  24. #define MASTERRCFILE    "/usr/local/lib/bbsrc"
  25. #define HUSHFILE    ".hush_bbs"
  26. #define RCFILE          ".bbsrc"
  27. #define SEQFILE         ".bbsseq"
  28. #define UUENCODE    "/usr/bin/uuencode"
  29. #define UUDECODE    "/usr/bin/uudecode"
  30. #define EDITOR        "vi"
  31. #define BID_DB        "bid"
  32. #define TEMP_BID_DB     BID_DB ".tmp"
  33.  
  34.  
  35. #define LEN_BID         12
  36. #define LEN_SUBJECT     80
  37. #define LEN_TO           8
  38. #define LEN_AT           8
  39. #define LEN_FROM         8
  40.  
  41. #define SECONDS     (1L)
  42. #define MINUTES     (60L*SECONDS)
  43. #define HOURS       (60L*MINUTES)
  44. #define DAYS        (24L*HOURS)
  45.  
  46. #define USER        0
  47. #define MBOX        1
  48. #define ROOT        2
  49.  
  50. #define BBS         0
  51. #define MAILorNEWS  1
  52.  
  53. #define DELETED        1
  54. #define BINARY        0x80
  55.  
  56. #define calleq(c1, c2) (!Strcasecmp((c1), (c2)))
  57. #define halt() errorstop(__LINE__)
  58. #define uchar(x) ((x) & 0xff)
  59. #if defined(_SC_OPEN_MAX) && !defined(__386BSD__)
  60. #define open_max()      sysconf(_SC_OPEN_MAX)
  61. #else
  62. #define open_max()      (1024)
  63. #endif
  64.  
  65. enum interface_type { wampes, diebox };
  66.  
  67. struct revision {
  68.   char number[16];
  69.   char date[16];
  70.   char time[16];
  71.   char author[16];
  72.   char state[16];
  73. };
  74.  
  75. struct user {
  76.   char *name;
  77.   uid_t uid;
  78.   gid_t gid;
  79.   char *dir;
  80.   char *shell;
  81.   char *cwd;
  82.   int seq;
  83. };
  84.  
  85. struct strlist {
  86.   struct strlist *next;
  87.   char str[1];
  88. };
  89.  
  90. struct mail {
  91.   char from[1024];
  92.   char to[1024];
  93.   char orig_to[1024];
  94.   char subject[1024];
  95.   char bid[1024];
  96.   char mid[1024];
  97.   char bin;
  98.   long date;
  99.   int lifetime;
  100.   struct strlist *head;
  101.   struct strlist *tail;
  102. };
  103.  
  104. struct dir_entry {
  105.   struct dir_entry *left, *right;
  106.   int count;
  107.   char to[LEN_TO+1];
  108. };
  109.  
  110.  
  111. struct index {
  112.   long size;
  113.   long date;
  114.   int mesg;
  115.   char bid[LEN_BID+1];
  116.   char lifetime_h;
  117.   char subject[LEN_SUBJECT+1];
  118.   char lifetime_l;
  119.   char to[LEN_TO+1];
  120.   char orig_to[LEN_TO+1];
  121.   char at[LEN_AT+1];
  122.   char from[LEN_FROM+1];
  123.   char flags;
  124. };
  125.  
  126. struct cmdtable {
  127.   const char *name;
  128.   void (*fnc)(int argc, char **argv);
  129.   int argc;
  130.   int level;
  131. } ;
  132.  
  133. struct aliastable {
  134.   char orig[256];
  135.   char alias[256];
  136.   char is_std;
  137.   int  level;
  138.   struct aliastable *next;
  139. } ;
  140.  
  141. struct log {
  142.   char to[LEN_TO+1];
  143.   long time;
  144.   unsigned bytes;
  145.   int uid;
  146. };
  147.   
  148.  
  149. extern char *optarg;
  150. extern int optind;
  151.  
  152. extern char Myhostname[];
  153. extern char myhostname[];
  154. extern char prompt[1024] ;
  155. extern const char daynames[] ;
  156. extern const char monthnames[] ;
  157. extern int debug;
  158. extern int doforward;
  159. extern int errors;
  160. extern int fdindex;
  161. extern int fdlock;
  162. extern int fdlog;
  163. extern int fdseq;
  164. extern int level;
  165. extern int mode;
  166. extern int packetcluster;
  167. extern struct revision revision;
  168. extern struct user user;
  169. extern volatile int stopped;
  170. extern struct passwd *bbs_adm;
  171. extern int  is_bbs_adm;
  172. extern int  is_tell_user;
  173. extern char compressext[];
  174. extern char compress[];
  175. extern char uncompressoption[];
  176. extern char compressoption[];
  177. extern char bbsadm[];
  178. extern char telluser[];
  179. extern char mydomain[];
  180. extern char station[];
  181. extern struct aliastable aliastable[];
  182. extern const struct cmdtable cmdtable[];
  183. extern char binary_allowed;
  184. extern char subject_in_send;
  185. extern struct aliastable *alias_table;
  186. extern enum interface_type interface_type;
  187. extern char last_board[LEN_TO+1];
  188. extern char escape_char;
  189. extern char orig_escape;
  190. extern int lowest_on_start;
  191. extern int highest_on_start;
  192. extern char editor[256];
  193. extern int log_reading;
  194. extern int dir_column; 
  195. extern int max_list;
  196. extern int fix_allowed;
  197. extern char debugfile[];
  198. extern char helpfile[];
  199. extern char infofile[];
  200. extern char masterrcfile[];
  201. extern char mailfile[];
  202. extern char boxpassword[];
  203. extern int  password_ok;
  204.  
  205. /* In bbs.c: */
  206. void errorstop(int line);
  207. int Xtolower(int c);
  208. int Xtoupper(int c);
  209. char *strupc(char *s);
  210. char *strlwc(char *s);
  211. int Strcasecmp(const char *s1, const char *s2);
  212. int Strncasecmp(const char *s1, const char *s2, int n);
  213. char *strtrim(char *s);
  214. const char *strcasepos(const char *str, const char *pat);
  215. char *getstring(char *s);
  216. char *timestr(long gmt);
  217. char *rfc822_date(long gmt);
  218. long parse_date(const char *str);
  219. void make_parent_directories(const char *filename);
  220. char *getfilename(int mesg);
  221. void get_seq(void);
  222. void put_seq(void);
  223. void wait_for_prompt(void);
  224. int get_index(int n, struct index *index);
  225. int read_allowed(const struct index *index);
  226. char *get_user_from_path(char *path);
  227. char *get_host_from_path(char *path);
  228. int msg_uniq(const char *bid, const char *mid);
  229. void send_to_bbs(struct mail *mail);
  230. void send_to_mail(struct mail *mail);
  231. void send_to_news(struct mail *mail);
  232. void fix_address(char *addr);
  233. struct mail *alloc_mail(void);
  234. void free_mail(struct mail *mail);
  235. void route_mail(struct mail *mail);
  236. void append_line(struct mail *mail, char *line);
  237. int get_header_value(const char *name, int do822, char *line, char *value);
  238. char *get_host_from_header(const char *line);
  239. int host_in_header(char *fname, char *host);
  240. void alias_command(int argc, char **argv);
  241. void bye_command(int argc, char **argv); 
  242. void change_command(int argc, char **argv); 
  243. void delete_command(int argc, char **argv);
  244. void destroy_command(int argc, char **argv);
  245. void dir_print(struct dir_entry *p);
  246. void dir_command(int argc, char **argv);
  247. void disconnect_command(int argc, char **argv);
  248. void forward_message(const struct index *index, const char *filename, 
  249.                      const char *at, int skip_header);
  250. void f_command(int argc, char **argv);
  251. void help_command(int argc, char **argv);
  252. void hide_command(int argc, char **argv);
  253. void info_command(int argc, char **argv);
  254. void list_command(int argc, char **argv);
  255. void mail_command(int argc, char **argv);
  256. void move_command(int argc, char **argv);
  257. void mybbs_command(int argc, char **argv);
  258. void quit_command(int argc, char **argv);
  259. void read_command(int argc, char **argv);
  260. void reply_command(int argc, char **argv);
  261. void send_command(int argc, char **argv);
  262. void set_command(int argc, char **argv);
  263. void shell_command(int argc, char **argv);
  264. void sid_command(int argc, char **argv);
  265. void source_command(int argc, char **argv);
  266. void status_command(int argc, char **argv);
  267. void tell_command(int argc, char **argv);
  268. void undelete_command(int argc, char **argv);
  269. void unknown_command(int argc, char **argv);
  270. void unset_command(int argc, char **argv);
  271. void write_command(int argc, char **argv);
  272. void xcrunch_command(int argc, char **argv);
  273. void xscreen_command(int argc, char **argv);
  274. char *connect_addr(char *host);
  275. void connect_bbs(void);
  276. void parse_command_line(char *line);
  277. void bbs(void);
  278. void interrupt_handler(int sig);
  279. void alarm_handler(int sig);
  280. void recv_from_mail_or_news(void);
  281. void getalias(char *original);
  282. int forward_allowed(const struct index *index,const  char * name);   
  283. int send_allowed(const struct mail *mail,const char *at,const char * name);   
  284. int read_config(void);
  285. int send_binary(struct mail *mail, char *line);
  286. int do_crc(char *buf, int n, unsigned int crc);
  287. int uudecode(FILE *fp, char *line);
  288. void init_aliasdb(void);
  289. void check_cmdaliases(char *line);
  290. void insert_alias(const char *orig, const char *alias, 
  291.                   const int level, char is_std);
  292. void get_welcomemsg(void);
  293. int get_lowest_mesg(int argc, char **argv);
  294. int get_highest_mesg(int argc, char **argv);
  295. int mesg_in_command(int argc, char **argv, int mesg, struct index *index);
  296. int get_lowest_on_start(void);
  297. int get_highest_on_start(void);
  298. int Atoi(char *str);
  299. int forward_mail(void);
  300. int isvaliduser(char *s);
  301. int has_passwd(char *call);
  302. int get_passwd(char *call, char *timestamp, char *password);
  303.  
  304. #endif  /* of BBS_H */
  305.